Skip to content

dashboard: say on the page when what it shows is stale - #216

Merged
hhff merged 2 commits into
mainfrom
dashboard-stale-cue
Nov 13, 2026
Merged

hhff merged 2 commits into
mainfrom
dashboard-stale-cue

Conversation

@hhff

@hhff hhff commented Nov 13, 2026

Copy link
Copy Markdown
Member

Follow-up to #214, at the owner's request. When the server answers with its last good data (a run over 20 s, or a failed one), the page used to show it with no cue beyond the sidebar's "updated" time, and that's hidden on phones.

What it adds

  • An amber note at the top: "Showing data from 3:32:22 PM. Newer data is taking a while to load; this page will update by itself." It names the time of what is drawn, not of a read held back while you type, and adds the date when the data isn't from today.
  • It's fixed in place, so nothing under the cursor moves, and clicks pass through it.
  • On a desktop it's centred over the content. On a phone it sits below the nav, measured rather than a fixed offset.
  • It sits under a drawer or review view, and gives way to the failure or "updated" banner.
  • It's a `role=status` region, and its text is set only when it changes, so a screen reader isn't told again on every poll.
  • It hides as soon as a fresh read lands.

Tests. A new Chrome test runs on a phone viewport with `DEVTEAM_DATA_WAIT_MS=0`. It checks the note is shown inside the screen width, below the nav, and names the drawn data's time, all in one evaluation. Dashboard file on Node 24 locally: 114 pass, none failing. Checked by screenshot on phone (light) and desktop (dark).

Review. Fable did an adversarial review, and its fixes are in the last commit: the wrong time while data was held, a racy first-read assertion, floating over the drawer, overlapping banners, repeat screen-reader announcements, and the copy.

🤖 Generated with Claude Code

hhff and others added 2 commits November 13, 2026 15:25
A read the server answers with its last good data (a slow run, or a failed one) now puts a
note at the top: the time of what is shown, and that the page updates when the latest is
ready. Fixed, so nothing under the cursor moves; over the content on a desktop and below the
nav on a phone; clicks pass through it. A failure's banner replaces it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- It names the time of what is drawn, not of a read held while the owner types.
- It gives way to a banner at the top, and sits under a drawer or review (z-index 19).
- On a phone it sits below the nav as measured, not a fixed 60 px.
- Its text is set only when it changes, so a screen reader isn't told again each poll.
- Plainer copy, with the date when the data isn't from today.
- The test checks it in one evaluation, with no assertion racing the next poll.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@hhff

hhff commented Nov 13, 2026

Copy link
Copy Markdown
Member Author

Reviewed: the owner asked for a visible cue while the page shows older data. It's a fixed note naming the drawn data's time, set as text only when it changes, pointer-events none, and it gives way to the failure and updated banners. Fable reviewed it, and its fixes are in. Dashboard tests pass on Node 24, including a phone-viewport Chrome test. CI 8/8.

@hhff
hhff merged commit c3bd56d into main Nov 13, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant